package jvm.heap.escapeanalysis;

/**
 * @Author: ideaAdmin
 * TODO: 逃逸分析
 *          查看new的对象实体是否有可能在外部被调用 如果有 则是逃逸
 * Date: 2022/2/22:10:19
 * Description:
 */

public class EscapeAnalysis {
    public EscapeAnalysis obj;

    /**
        * TODO:方法返回EscapeAnalysis对象 发生了逃逸
    **/
    public EscapeAnalysis getInstance(){
        return obj==null ? obj=new EscapeAnalysis() : obj;
    }
    /**
        * TODO:为成员变量赋值 发生了逃逸
    **/
    public void setObj(){
        this.obj = new EscapeAnalysis();
    }
    //如果当前的obj声明为static 也是发生了逃逸


    /**
        * TODO:对象的作用域仅在这个方法中 没有发生逃逸
    **/
    public void useEscapeAnalysis(){
        EscapeAnalysis escapeAnalysis = new EscapeAnalysis();
    }

    /**
        * TODO:引用到了成员变量 发生了逃逸
    **/
    public void useEscapeAnalysis1(){
        EscapeAnalysis escapeAnalysis = getInstance();
    }

}
